import axios, {
  AxiosInstance,
  AxiosPromise,
  AxiosRequestConfig,
  AxiosResponse,
} from 'axios'
import router from '../router/index'
const config = {
  // baseURL: '/espi-api/shanghai',
  timeout: 300 * 1000,
}
const service: AxiosInstance = axios.create(config)

//请求拦截器
service.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    // config.headers.common = {
    //   jwttoken:
    //     localStorage.getItem('espi-token') == undefined
    //       ? ''
    //       : localStorage.getItem('espi-token'),
    // }
    // 在发送请求之前做些什么
    return config
  },
  (error:any) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  },
)

//响应拦截器
service.interceptors.response.use(
  (config: AxiosResponse) => {
    // switch (config.data.code) {
    //   case 101: {
    //     localStorage.clear()
    //     router.replace({
    //       path: '/?redirect=' + window.location.href,
    //     })
    //     break
    //   }
    //   case 102: {
    //     localStorage.clear()
    //     router.replace({
    //       path: '/?redirect=' + window.location.href,
    //     })
    //     break
    //   }
    // }
    // 对响应数据做点什么
    return config
  },
  (error:any) => {
    // 对响应错误做点什么
    return Promise.reject(error)
  },
)
function convertParams(obj: any) {
  console.log(obj)
  if (!obj || typeof obj !== 'object') {
    return obj
  }
  const params: any = []
  Object.keys(obj).forEach((key) => {
    let value = obj[key]
    // 如果值为undefined我们将其置空
    if (typeof value === 'undefined') {
      value = ''
    }
    // 对于需要编码的文本（比如说中文）我们要进行编码
    params.push([key, encodeURIComponent(value)].join('='))
  })
  return params.join('&')
}
export default class http {
 public static get(Url: string, data?: any): AxiosPromise<any> {
    const url = data
      ? `${Url}${typeof data === 'object' ? '?' : ''}${convertParams(data)}`
      : Url
    return service.get(url)
  }

  public static post(url: string, data?: any): AxiosPromise<any> {
    return service.post(url, data)
  }
}
